#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>

//int main()
//{
//	printf("I am a process pid: %d, ppid:%d ,Process begin:\n", getpid(), getppid());
//	
//	//标准写法
//	execl("/usr/bin/ls", "ls", "-a", "-l", NULL);
//	printf("I am a process pid: %d, ppid:%d ,Process end:\n", getpid(), getppid());
//	return 0;
//}
//

int main()
{
	//putenv("AAA=125");//给自己定义环境变量
	pid_t id = fork();
	if(id == 0)
	{
		printf("I am a process pid: %d, ppid:%d ,Process begin:\n", getpid(), getppid());
		sleep(1);
	//	char * const myargv[] = {
	//		"ls",
	//		"-a",
	//		"-l",
	//		NULL
	//	};
	//	char * const myargv[] = {
	//		"test",
	//		"-a",
	//		"-b",
	//		"-c",
	//		NULL
	//	};
		//execl("/usr/bin/ls", "ls", "-a", "-l", NULL);
		//execlp("ls", "ls", "-a", "-l", NULL);
		//execv("/usr/bin/ls", myargv);
		//execvp("ls", myargv);
		//const char* exe = "test";
		//execl("./test", "test", NULL);
		//execl("/usr/bin/bash", "bash","test.sh", NULL);
		//execv("./test", myargv);
		//execv("./test",myargv);
		//extern char **environ;
		//execle("./test", "test", "-a", "-b","-c", NULL, environ);
	
		char * const myenv[] = {
			"A==1",
			"B==2",
			"C==3",
			NULL
		}; //自己的环境变量表
		execle("./test", "test", "-a", "-b","-c", NULL, myenv);
		
		printf("I am a process pid: %d, ppid:%d ,Process end:\n", getpid(), getppid());
		
		exit(1);
	}
	//father
	pid_t ret = waitpid(id, NULL, 0);
	if(ret==id) printf("wait success! pid:%d, ret:%d\n", getpid(), ret);
	return 0;
}
